package com.soft.javase.ch10.functional;

import java.time.LocalDateTime;

/**
 * @author wangzhisen
 * @Desc TODO
 * @date 2025/5/7
 *
 * 通过Lambda + Functional Interface 的好处？
 * 1.简化代码，使代码更加简洁
 * 2.延迟加载效果
 *
 * 需求：日志记录（时间+异常类型+异常信息行数） 日志级别达到3才需要记录输出
 */
public class FunctionalDemo2 {

    public  static void testLog(int level , String msg) {
        if(level == 3){
            System.out.println(msg);
        }
    }

    public static void testLogAndFunctionalInterface(int level , MyFunctionalInterface2 my) {
        if(level == 3){
            my.test();
        }
    }

    public static void main(String[] args) {
        //日志记录（时间+异常类型+异常信息行数）
        LocalDateTime now = LocalDateTime.now();
        String type = "NullPointerException";
        String line = "Bank.java 112";

        //无论是否符合日志等级，都将会先拼接好日志信息
        testLog(1 , now+" , "+type+" , "+line );

        //等级一但不符合，不会进行日志信息的拼接操作
        testLogAndFunctionalInterface(2 , ()->System.out.println(now+" , "+type+" , "+line));
    }


}
@FunctionalInterface
interface MyFunctionalInterface2 {
    //记录日志的操作
    void test();
}
